home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 52
/
Amiga Format AFCD52 (Issue 136, May 2000).iso
/
-serious-
/
programming
/
c
/
stormamiga_lib-v45_00d
/
stormc_v3-examples
/
standard
/
speedtest
/
speedtest.c
< prev
Wrap
C/C++ Source or Header
|
2000-02-28
|
9KB
|
377 lines
/********************************************
** **
** SpeedTest **
** **
** Copyright 1996/98 by CyberdyneSystems **
** **
** written by Matthias Henze **
** **
***************** 11/07/97 *****************/
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <pragma/exec_lib.h>
clock_t timestart;
double z = 0;
void end (void)
{
double y;
clock_t timeend;
timeend = clock ();
y = ((timeend - timestart) / (double)50);
printf ("Benötigte Zeit: %.5g s\n", y);
z = z + y;
}
int main (void)
{
double *d, x;
double a = 80.9394;
double b = -80.9394;
int *e, i, loop;
printf("\nGeben Sie bitte die Anzahl der Testdurchläufe an: ");
scanf("%d",&loop);
Forbid ();
/*--fabs--*/
printf ("fabs (80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = fabs (a);
end();
printf ("Der absolute Betrag von 80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
printf ("fabs (-80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = fabs (b);
end();
printf ("Der absolute Betrag von -80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
/*--floor--*/
printf ("floor (80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = floor (a);
end();
printf ("Die nächstkleinere Ganzzahl von 80.9394 sollte 80 sein und ist: %g\n\n", x);
printf ("floor (-80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = floor (b);
end();
printf ("Die nächstkleinere Ganzzahl von -80.9394 sollte -81 sein und ist: %g\n\n", x);
/*--sqrt--*/
printf ("sqrt (9)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sqrt (9);
end();
printf ("Die Quadratwurzel von 9 sollte 3 sein und ist: %g\n\n", x);
printf ("sqrt (-9)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sqrt (-9);
end();
printf ("Die Quadratwurzel von -9 sollte NaN (Not a Number) sein und ist: %g\n\n", x);
/*--ceil--*/
printf ("ceil (80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = ceil (a);
end();
printf ("Die nächstgrößere Ganzzahl von 80.9394 sollte 81 sein und ist: %g\n\n", x);
printf ("ceil (-80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = ceil (b);
end();
printf ("Die nächstgrößere Ganzzahl von -80.9394 sollte -80 sein und ist: %g\n\n", x);
/*--frexp--*/
printf ("frexp (9)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = frexp (9,(void *) &e);
end();
printf ("Die Mantisse von 9 sollte 0.5625 sein und ist: %g\nDer Exponent von 9 sollte 4 sein und ist: %d\n\n", x, e);
printf ("frexp (88)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = frexp (88,(void *) &e);
end();
printf ("Die Mantisse von 88 sollte 0.6875 sein und ist: %g\nDer Exponent von 88 sollte 7 sein und ist: %d\n\n", x, e);
/*--modf--*/
printf ("modf (80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = modf (a,(void *) &d);
end();
printf ("Der Nachkommateil von 80.9394 sollte 0.9394 sein und ist: %g\nDer Vorkommateil von 80.9394 sollte 80 sein und ist: %g\n\n", x, d);
printf ("modf (-80.9394)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = modf (b,(void *) &d);
end();
printf ("Der Nachkommateil von -80.9394 sollte -0.9394 sein und ist: %g\nDer Vorkommateil von -80.9394 sollte -80 sein und ist: %g\n\n", x, d);
/*--fmod--*/
printf ("fmod (5.7, 1.5)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = fmod (5.7,1.5);
end();
printf ("Das Ergebnis dieser Funktion sollte 1.2 sein und ist: %g\n\n", x);
printf ("fmod (-5.7, 1.5)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = fmod (-5.7,1.5);
end();
printf ("Das Ergebnis dieser Funktion sollte -1.2 sein und ist: %g\n\n", x);
/*--ldexp--*/
printf ("ldexp (9, 3)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = ldexp (9,3);
end();
printf ("Das Produkt von 9 * (2³) sollte 72 sein und ist: %g\n\n", x);
printf ("ldexp (-9, 3)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = ldexp (-9,3);
end();
printf ("Das Produkt von -9 * (2³) sollte -72 sein und ist: %g\n\n", x);
/*--exp--*/
printf ("exp (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = exp (0);
end();
printf ("Das Ergebnis dieser Funktion sollte 1 sein und ist: %g\n\n", x);
printf ("exp (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = exp (1);
end();
printf ("Das Ergebnis dieser Funktion sollte 2.71828 sein und ist: %g\n\n", x);
/*--log--*/
printf ("log (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = log (1);
end();
printf ("Der Logarithmus naturalis von 1 sollte 0 sein und ist: %g\n\n", x);
printf ("log (9)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = log (9);
end();
printf ("Der Logarithmus naturalis von 9 sollte 2.19722 sein und ist: %g\n\n", x);
/*--log10--*/
printf ("log10 (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = log10 (1);
end();
printf ("Der dekadische Logarithmus von 1 sollte 0 sein und ist: %g\n\n", x);
printf ("log10 (9)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = log10 (9);
end();
printf ("Der dekadische Logarithmus von 9 sollte 0.954243 sein und ist: %g\n\n", x);
/*--pow--*/
printf ("pow (9,1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = pow (9,1);
end();
printf ("Die Potenz 9¹ sollte 9 sein und ist: %g\n\n", x);
printf ("pow (0.9,3)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = pow (0.9,3);
end();
printf ("Die Potenz 0.9³ sollte 0.729 sein und ist: %g\n\n", x);
/*--acos--*/
printf ("acos (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = acos (0);
end();
printf ("Der Arcuscosinus von 0 sollte 1.5708 sein und ist: %g\n\n", x);
printf ("acos (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = acos (1);
end();
printf ("Der Arcuscosinus von 1 sollte 0 sein und ist: %g\n\n", x);
/*--cos--*/
printf ("cos (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = cos (0);
end();
printf ("Der Cosinus von 0 sollte 1 sein und ist: %g\n\n", x);
printf ("cos (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = cos (1);
end();
printf ("Der Cosinus von 1 sollte 0.540302 sein und ist: %g\n\n", x);
/*--cosh--*/
printf ("cosh (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = cosh (0);
end();
printf ("Der Cosinus hyperbolicus von 0 sollte 1 sein und ist: %g\n\n", x);
printf ("cosh (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = cosh (1);
end();
printf ("Der Cosinus hyperbolicus von 1 sollte 1.54308 sein und ist: %g\n\n", x);
/*--asin--*/
printf ("asin (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = asin (0);
end();
printf ("Der Arcussinus von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("asin (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = asin (1);
end();
printf ("Der Arcussinus von 1 sollte 1.5708 sein und ist: %g\n\n", x);
/*--sin--*/
printf ("sin (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sin (0);
end();
printf ("Der Sinus von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("sin (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sin (1);
end();
printf ("Der Sinus von 1 sollte 0.841471 sein und ist: %g\n\n", x);
/*--sinh--*/
printf ("sinh (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sinh (0);
end();
printf ("Der Sinus hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("sinh (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = sinh (1);
end();
printf ("Der Sinus hyperbolicus von 1 sollte 1.1752 sein und ist: %g\n\n", x);
/*--atan--*/
printf ("atan (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = atan (0);
end();
printf ("Der Arcustangens von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("atan (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = atan (1);
end();
printf ("Der Arcustangens von 1 sollte 0.785398 sein und ist: %g\n\n", x);
/*--atan2--*/
printf ("atan2 (9,3)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = atan2 (9,3);
end();
printf ("Der Arkustangens von 9/3 sollte 1.24905 sein und ist: %g\n\n", x);
printf ("atan2 (90,15)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = atan2 (90,15);
end();
printf ("Der Arkustangens von 90/15 sollte 1.40565 sein und ist: %g\n\n", x);
/*--tan--*/
printf ("tan (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = tan (0);
end();
printf ("Der Tangens von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("tan (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = tan (1);
end();
printf ("Der Tangens von 1 sollte 1.55741 sein und ist: %g\n\n", x);
/*--tanh--*/
printf ("tanh (0)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = tanh (0);
end();
printf ("Der Tangens hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
printf ("tanh (1)\n");
timestart = clock ();
for (i = 0; i < loop; i++)
x = tanh (1);
end();
printf ("Der Tangens hyperbolicus von 1 sollte 0.761594 sein und ist: %g\n\n", x);
Permit ();
printf ("Gesamtzeit für %d Durchgänge: %g s\n", loop, z);
return NULL;
}